/**
**************************************************************************************
*Founder Effect                                                                      *
*Copyright (C) 2006-2007, 5d Studios (www.5d-Studios.com)                            *
*                                                                                    *
*This library is free software; you can redistribute it and/or                       *
*modify it under the terms of the GNU Lesser General Public                          *
*License as published by the Free Software Foundation; either                        *
*version 2.1 of the License, or (at your option) any later version.                  *
*                                                                                    *
*This library is distributed in the hope that it will be useful,                     *
*but WITHOUT ANY WARRANTY; without even the implied warranty of                      *
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                   *
*Lesser General Public License for more details.                                     *
*                                                                                    *
*You should have received a copy of the GNU Lesser General Public                    *
*License along with this library; if not, write to the Free Software                 *
*Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA      *
**************************************************************************************
*/
#include "StdAfx.h"
#include "EntityController.h"
#include "EntityEvents.h"
#include "EntityManager.h"
#include "IEntity.h"

#include "../Kernel.h"

extern Kernel* g_kernel;
#define TIME (g_kernel->GetTime())

/**
=============================
Construct a controller object
registering the listener
=============================
*/
EntityController::EntityController(void) : IEventListener()
{
    m_entity = NULL;
    Register();
}

/**
=============================
Deconstructor - destroy
=============================
*/
EntityController::~EntityController(void)
{
    UnRegister();
    IEventListener::~IEventListener();   
}


/** 
 *  Handle a giving event, switch the entities state
 *  based off the FSM 
 */
bool EntityController::HandleEvent( IEvent* e )
{
    switch( e->GetType() )
    {
    /*--- entity event ----*/
    case EVT_ENTITY:
        EntityEvents* evt = e->GetData<EntityEvents>();

        if ( m_entity->GetID() != evt->ent_id ) 
            return false;
        //if ( !m_entity->InputEnabled() )
        //    return false;

        m_entity->m_actions = evt->buttons;

    };
    return true;
}
